import axios from "axios";
import {getToken} from "@/composables/cookie.js";
import {showMessage} from "@/composables/utils.js";
import {userUserStore} from "@/stores/user.js";
//创建axios实例
const instance =  axios.create({
    baseURL: '/api' ,
    timeout: 7000
})

//添加请求拦截器
 instance.interceptors.request.use(function (config){
     //在发送请求前做些什么
     const token = getToken()
     console.log('统一添加请求头中的token'+ token)
     //当token不为空时
     if(token){
         config.headers['Authorization']= 'Bearer '+ token
     }
     return config;
 },function (error){
     //对请求错误做些什么
     return Promise.reject(error);
 })

//添加响应拦截器
instance.interceptors.response.use(function (response){
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response.data
},function (error){
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    console.log(error)

    let status = error.response.status
    if(status === 401){
        let userStore = userUserStore()
        userStore.logout()
        location.reload()
    }
    // 若后台有错误提示就用提示文字，默认提示为 '请求失败'
    let errorMsg = error.response.data.message || '请求失败'
    showMessage(errorMsg,'error')
    return Promise.reject(error)
})

export default instance
